วิธีการใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk
POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำการใช้งานฟังก์ชัน Application version ใน Elastic Beanstalk โดยจะเน้นไปที่ฟังก์ชัน Application version ที่มีอยู่ตรงเมนูด้านซ้ายใน Elastic Beanstalk ครับ
สิ่งที่ต้องมี
- มี Application ใน Elastic Beanstalk แล้ว (ในบทความนี้ผมใช้ชื่อ Applications:
tinnakorn
) -
มี Application versions อยู่ในฟังก์ชัน Application แล้ว
วิธีเข้ามาที่ Application versions
เข้ามาที่ Service Elastic Beanstalk แล้วมาที่เมนูด้านซ้าย เลือกApplications
แล้วให้ค้นหาชื่อของเรา และคลิกเข้ามาได้เลย เช่นtinnakorn
แล้วดูที่เมนูด้านซ้าย จะเห็นว่าแสดงเป็นชื่อ Application ของเรา ในตัวอย่างนี้คือ▼ tinnakorn
ทีนี้ให้เลือกApplication versions
แล้วดูที่ด้านขวาจะเห็นว่ามีรายการโปรเจกต์เวอร์ชันที่ Deploy ไปก่อนหน้านี้ ถ้าไม่เคยสร้าง Environment มาก่อน ก็จะไม่มีเวอร์ชันที่นี่
- Environments ที่จะสร้างในบทความนี้
- Environment:
tinnakorn-single
- Environment:
tinnakorn-develop
- Environment:
การสร้าง Environment ใหม่จาก Application versions
การสร้าง Environment นี้ผมจะใช้ชื่อ Environment:tinnakorn-single
มาที่เมนูด้านซ้าย คลิกที่ชื่อ Application ของเรา เช่นtinnakorn
แล้วมาที่ด้านขวา คลิกปุ่มCreate a new environment
ในหัวข้อ Select environment tier นี้ให้เลือกWeb server environment
และคลิกSelect
ตั้งค่าในหัวข้อ Environment information และ Platform ตามต้องการ
จากนั้นเลื่อนลงมาด้านล่างสุดที่หัวข้อApplication code
แล้วตั้งค่าโดยเลือกExisting version
และคลิกที่ช่อง-- Choose a version --
แล้วเลือกเวอร์ชันที่เราต้องการใช้งาน เช่น20220822_1404
หลังจากนี้ก็ตั้งค่า Configure more options ตามที่ต้องการและคลิกCreate environment
แล้วรอระบบเริ่มต้นจนเสร็จ
แล้วกลับมาที่ Application versions อีกครั้ง จะเห็นว่า 20220822_1404 กำลังถูกใช้งานอยู่ใน Environment:tinnakorn-single
การสร้าง Environment ใหม่จาก Saved configurations
การสร้าง Environment นี้ผมจะใช้ชื่อ Environment:tinnakorn-develop
มาที่เมนูด้านซ้าย เลือกSaved configurations
ใน Application ของเรา
แล้วมาที่ด้านขวา ติ๊ก✅
ที่ Configuration name ของเรา และคลิกปุ่มLaunch environment
ในหัวข้อ Select environment tier นี้ให้เลือกWeb server environment
และคลิกSelect
ตั้งค่าในหัวข้อ Environment information และ Platform ตามต้องการ
จากนั้นเลื่อนลงมาด้านล่างสุดที่หัวข้อApplication code
แล้วตั้งค่าโดยเลือกExisting version
และคลิกที่ช่อง-- Choose a version --
แล้วเลือกเวอร์ชันที่เราต้องการใช้งาน เช่น20220815_1043
หลังจากนี้ก็ตั้งค่า Configure more options ตามที่ต้องการและคลิกCreate environment
แล้วรอระบบเริ่มต้นจนเสร็จ
แล้วกลับมาที่ Application versions อีกครั้ง จะเห็นว่า 20220815_1043 กำลังถูกใช้งานอยู่ใน Environment:tinnakorn-develop
การเพิ่ม Application versions
เราสามารถสร้าง Application versions ใหม่โดยการคลิกปุ่ม Upload ได้
ผมจะใช้ชื่อไฟล์20220822_deploy_test
ในการ Upload ครับ
เข้ามาที่Application versions
ของเรา
แล้วมาที่ด้านขวา คลิกปุ่มUpload
แล้วจะมี pop-up แสดงขึ้นมา
ตั้งชื่อ Version label ที่ต้องการ แล้วคลิกปุ่มChoose file
เพื่อเลือกไฟล์ และคลิกปุ่มUpload
จะเห็นว่ามี Version label:20220822_deploy_test
ที่ผมอัปโหลดแสดงขึ้นมาแล้วครับ
Deploy ไปยัง Environment จาก Application versions
เราสามารถทำการ Deploy เวอร์ชันที่ต้องการกับ Environment ปัจจุบันได้
ขั้นตอนนี้ผมจะ Deploy Version label:20220822_test_deploy
กับ Environment:tinnakorn-develop
เข้ามาที่Application versions
ของเรา
แล้วมาที่ด้านขวา ติ๊ก✅
Version label ที่ต้องการ เช่น20220822_test_deploy
ตามด้วยเลือกAction
และเลือกDeploy
เลือก Environment ที่ต้องการ เช่นtinnakorn-develop
และคลิกDeploy
ดูที่ Deployed to จะเห็นว่ามีชื่อ Environment:tinnakorn-develop
แสดงขึ้นมาแล้ว
นอกจากนี้ยังสามารถใช้ในกรณีที่ต้องการกลับมาใช้เวอร์ชันเก่าได้อีกด้วย
กรณีที่กำลังใช้ Rolling update สามารถทำการ Deploy โดยไม่ต้องหยุดให้บริการได้ครับ
อ่านเพิ่มเติมได้ที่ลิงก์นี้: Deployment policies ที่ใช้ได้ใน AWS Elastic Beanstalk มีอะไรบ้าง
การดาวน์โหลดไฟล์จาก Application versions
เราสามารถ Download ไฟล์ ZIP โดยคลิกที่ Source จากรายการได้
ขั้นตอนนี้ผมจะดาวน์โหลดไฟล์ Version label:20220822_test_deploy
เข้ามาที่Application versions
ของเรา
แล้วมาที่ด้านขวา ติ๊ก✅
Version label ที่ต้องการดาวน์โหลด
ตรวจสอบที่บันทึกไฟล์จริงของ Application versions ว่าอยู่ที่ไหน
เข้ามาที่ Service S3 แล้วเลือก Buckets จากเมนูด้านซ้าย
จากนั้นค้นหาและเลือก Buckets:elasticbeanstalk-[region]-[aws-account-id]
จะเห็นว่าไฟล์เวอร์ชั่นต่างๆ ถูกบันทึกอยู่ในนี้ ซึ่งจะเป็นชื่อไฟล์[ลำดับสตริงก์สุ่ม]-[version-name].zip
นั่นเอง เช่น2022234tg7-20220822_test_deploy.zip
(ตอนค้นหาชื่อไฟล์ในนี้ต้องใส่ชื่อเต็มของ Source จึงจะแสดงแบบนี้ หรือจะกดปุ่ม Ctrl+f เพื่อค้นหาก็ได้)
การลบ Application versions
ขั้นตอนนี้ผมจะลบ Version label ที่ชื่อว่า
・20220815_1043
・20220817_2215
เมื่อ Application versions สะสมขึ้นเรื่อยๆแล้ว ก็จะถูกเก็บเป็นไฟล์ใน S3 เรื่อยๆเป็นจำนวนมาก ซึ่ง S3 จะมีค่าใช้จ่ายแค่ส่วน Storage ที่เราใช้งานไปเท่านั้น ดังนั้นบางครั้งเราต้องลบเวอร์ชันเก่าหรือที่ไม่ได้ใช้งานออกเพื่อลดค่าใช้จ่าย
ห้ามใช้ Service S3 ลบไฟล์ ให้ทำการลบ Application Version จาก Service Elastic Beanstalk นะครับ
ทำการลบโดยติ๊ก✅
Version label ที่ต้องการลบ และคลิกที่Action
แล้ว Version label ที่เราลบก็จะหายไป
การลบ Application versions โดยอัตโนมัติ
เราสามารถตั้งค่าได้ตามต้องการโดยใช้ข้อมูลด้านบนนี้ในการอ้างอิงการตั้งค่าได้เลยครับ
※Setting
Lifecycle policy: ✅ Enable
Lifecycle rule:
◉ Set the application versions limit by total count:[จำนวนเวอร์ชัน]
Application Versions (เมื่อเกินจำนวนเวอร์ชันที่เรากำหนดไว้ Application versions เก่าจะถูกลบโดยอัตโนมัติ)
◉ Set the application versions limit by age:[จำนวนวัน]
days (เมื่อเกินจำนวนวันที่เรากำหนดไว้ Application versions เก่าจะถูกลบโดยอัตโนมัติ)
Retention:
delete source bundle from S3 (ลบไฟล์ ZIP ของ version จาก S3)
retain source bundle in S3 (ให้ลบจากรายการเท่านั้น โดยไม่ให้ลบไฟล์ ZIP ของ version จาก S3)
ตัวอย่างการตั้งค่า
มาที่Application versions
คลิกSetting
การตั้งค่านี้เมื่อถึงจำนวน201
Application Versions แล้ว เวอร์ชันเก่าก็จะถูกลบโดยอัตโนมัติ และจะลบไฟล์ ZIP ของ version จาก S3 ออกไปด้วย
การตั้งค่านี้เมื่อครบ30
days แล้ว Application versions เก่าจะถูกลบโดยอัตโนมัติ และจะลบจากรายการเท่านั้น โดยไม่ให้ลบไฟล์ ZIP ของ version จาก S3
สรุป
การใช้งานฟังก์ชัน Application version สามารถใช้ในการสร้าง Environment หรือ Deploy ไปยัง Environment ที่กำลังใช้งานอยู่ได้ นอกจากนี้ยังสามารถ Deploy กลับมาใช้เวอร์ชันเก่าได้อีกด้วย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !
Link อ้างอิง
- ราคา Amazon S3
- ทดลองเริ่มต้นใช้งาน Sample Elastic Beanstalk ด้วย PHP
- ทดลอง Deploy PHP ด้วย Elastic Beanstalk และลองเชื่อมต่อกับ RDS
- ทดลอง Deploy Laravel ด้วย Elastic Beanstalk และลองเชื่อมต่อกับ RDS
- AWS Elastic Beanstalk คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS ในปี 2022
- Deployment policies ที่ใช้ได้ใน AWS Elastic Beanstalk มีอะไรบ้าง